/**
 * 消息提示组件
 */
class Message {
    /**
     * 创建消息容器
     */
    static init() {
        const container = document.createElement('div');
        container.className = 'message-container';
        document.body.appendChild(container);
    }

    /**
     * 显示消息
     * @param {string} text - 消息内容
     * @param {string} type - 消息类型 (success/error/info)
     * @param {number} duration - 显示时长(ms)
     */
    static show(text, type = 'info', duration = 5000) {
        const container = document.querySelector('.message-container');
        if (!container) {
            this.init();
        }

        const messageDiv = document.createElement('div');
        messageDiv.className = `message-item message-${type}`;
        messageDiv.innerHTML = `
            <span class="message-icon">${this.getIcon(type)}</span>
            <span class="message-text">${text}</span>
        `;

        document.querySelector('.message-container').appendChild(messageDiv);

        // 添加动画类
        setTimeout(() => messageDiv.classList.add('show'), 10);

        // 定时移除
        setTimeout(() => {
            messageDiv.classList.remove('show');
            setTimeout(() => messageDiv.remove(), 500);
        }, duration);
    }

    /**
     * 获取图标
     * @param {string} type - 消息类型
     * @returns {string} 图标
     */
    static getIcon(type) {
        const icons = {
            success: '✅',
            error: '❌',
            info: 'ℹ️',
            warning: '⚠️'
        };
        return icons[type] || icons.info;
    }

    /**
     * 成功提示
     * @param {string} text - 消息内容
     * @param {number} duration - 显示时长
     */
    static success(text, duration = 5000) {
        this.show(text, 'success', duration);
    }

    /**
     * 错误提示
     * @param {string} text - 消息内容
     * @param {number} duration - 显示时长
     */
    static error(text, duration = 5000) {
        this.show(text, 'error', duration);
    }

    /**
     * 信息提示
     * @param {string} text - 消息内容
     * @param {number} duration - 显示时长
     */
    static info(text, duration = 5000) {
        this.show(text, 'info', duration);
    }
} 